home *** CD-ROM | disk | FTP | other *** search
/ PC Media 22 / PC MEDIA CD22.iso / share / prog / rodent / 4.asm < prev    next >
Assembly Source File  |  1995-08-19  |  2KB  |  115 lines

  1. ; This is just for fun. Use the mouse to "scribble" on the screen.
  2. .model small
  3. .stack 0100h
  4.  
  5. .data
  6. cx_save         dw      ?
  7. esdx_save       dd      ?
  8. message         db      176,176,176,177,177,178,16,"$"
  9.  
  10. .code
  11. start:
  12. ; set screen mode, and clear the screen
  13. mov     ah, 00h
  14. mov     al, 03h
  15. int     10h
  16.  
  17. mov     ax, 0b800h
  18. mov     es, ax
  19. mov     di, 0000h
  20. mov     ax, 1700h
  21. mov     cx, 0fa0h
  22. cld
  23. repz
  24. stosw
  25.  
  26. ; begin mouse routines
  27. mov     ax, 0000h            ; initialize mouse
  28. int     33h
  29. mov     ax, 0001h           ; show mouse cursor
  30. int     33h
  31.  
  32. mov     ax, 0014h
  33. mov     cx, 03h              ; act on mouse move or left button press
  34. push    cs
  35. pop     es
  36. mov     dx, offset cs:mouse
  37. int     33h
  38. mov     [cx_save], cx 
  39. mov     [word ptr esdx_save], es
  40. mov     [word ptr esdx_save+2],dx
  41.  
  42. mov     ah, 00h
  43. int     16h
  44.  
  45. mov     ax, 0000h            ; re-initialize mouse
  46. int     33h
  47. mov     ax, 0002h           ; hide cursor
  48. int     33h
  49.  
  50. mov     cx, [cx_save]
  51. mov     es, [word ptr esdx_save]
  52. mov     dx, [word ptr esdx_save+2]
  53. mov     ax, 0014h
  54. int     33h
  55.  
  56. mov     ax, 0b800h
  57. mov     es, ax
  58. mov     di, 0000h
  59. mov     ax, 1700h
  60. mov     cx, 0fa0h
  61. cld
  62. repz
  63. stosw
  64.  
  65. ; set cursor size
  66. mov     ah, 01h
  67. mov     ch, 7
  68. mov     cl, 8
  69. int 10h
  70.  
  71.  
  72. ; terminate
  73. mov     ah, 04ch
  74. int     21h
  75.  
  76. mouse   proc
  77. push    dx
  78. push    ax
  79. push    cx
  80.  
  81. mov     bl, 8
  82. push    cx
  83. push    dx
  84. pop     ax
  85. div     bl
  86. mov     dh, al
  87. pop     ax
  88. div     bl
  89. mov     dl, al
  90.  
  91. mov     ah, 02h
  92. mov     bh, 00h
  93. int     10h
  94.  
  95. ; set cursor size
  96. mov     ah, 01h
  97. mov     ch, 1
  98. mov     cl, 0
  99. int 10h
  100.  
  101.  
  102. mov     ax, @data
  103. mov     ds, ax
  104. mov     dx, offset message
  105. mov     ah, 09h
  106. int     21h
  107.  
  108. pop     cx
  109. pop     ax
  110. pop     dx
  111. mouse   endp
  112. retf                    ; this is a "far" procedure
  113.  
  114. end     start
  115.